import tkinter

from tkinter import *
from tkinter import ttk

from sqlalchemy import create_engine
import pyperclip as clip
import json
import pandas as pd

from jsjj.schedule.workEveryDay import *

# 连接database
engine = create_engine('mysql+pymysql://jsbi:jsbi-1701@47.114.55.19:9011/biv1?charset=utf8')
con = engine.connect()

# 鼠标位置
x, y = 0, 0
text = "移动位置-x:{},y:{}".format(x, y)


def xFunc(event):
    print(comDownMenu1.get())  # #获取选中的值方法1
    print(xVariable.get())  # #获取选中的值方法2


# button被点击之后会被执行
def clickMe():  # 当acction被点击时,该函数则生效
    btnTransfer.configure(text='转换入库过程中... ')  # 设置button显示的内容
    btnTransfer.configure(state='disabled')  # 将按钮设置为灰色状态，不可使用状态

    value = clip.paste()
    jsonFromWeb = json.loads(value)
    df = pd.read_json(json.dumps(jsonFromWeb['result']['goodsDetailList']))
    # 解决可能出现的超时问题bugfix 2020.08.18
    con.connection.connection.ping(reconnect=True)
    df.to_sql(name='t_pdd_sjht_spmx', con=con, if_exists='append', index=False)

    btnTransfer.configure(text='转化入库')  # 设置button显示的内容
    btnTransfer.configure(state='enabled')  # 将按钮设置为灰色状态，不可使用状态


def callback(event):
    x = event.x
    y = event.y
    textvar = "鼠标位置x:{},y:{}".format(x, y)
    # titleTextObj.set(textvar)
    win.title(textvar)


def on_closing():
    # 关闭数据库连接
    con.close()
    win.destroy()
    sys.exit()     # 必须加，否则程序并没有完全退出

'''
打开窗体时执行的代码
'''
win = tkinter.Tk()
win.title("抓包精灵")  # #窗口标题
win.geometry("320x60+1500+900")  # #窗口位置500后面是字母x
win.wm_attributes('-topmost', 1)

frm_left = ttk.Frame(win)
frm_left.grid(row=0, column=0, padx='20', pady='30', sticky='e')
frm_middle = ttk.Frame(win)
frm_middle.grid(row=0, column=1, sticky='e')
frm_right = ttk.Frame(win)
frm_right.grid(row=0, column=2, padx='20', pady='30', sticky='e')

'''
下拉菜单
'''
xVariable = tkinter.StringVar()  # #创建变量，便于取值
comDownMenu1 = ttk.Combobox(frm_left, textvariable=xVariable, font=('微软雅黑', 10))  # #创建下拉菜单
comDownMenu1.grid(row=0, column=0, sticky='w')
comDownMenu1["value"] = ("拼多多-商家后台", "拼多多-电霸-热销商品", "拼多多-电霸-行业总览")  # #给下拉菜单设定值
comDownMenu1.current(0)
comDownMenu1.bind("<<ComboboxSelected>>", xFunc)  # #给下拉菜单绑定事件

'''
按钮
'''
btnTransfer = ttk.Button(frm_middle, text="转化入库",
                         command=clickMe)  # 创建一个按钮, text：显示按钮上面显示的文字, command：当这个按钮被点击之后会调用command函数
btnTransfer.grid(row=0, column=0)
# action.pack()
# action.grid(row=0, column=0)
# action.grid(column=2, row=1)  # 设置其在界面中出现的位置  column代表列   row 代表行

'''
每日定时任务的执行
'''
registerDailyJob(engine, con)
'''
绑定鼠标移动事件
'''
win.bind("<Motion>", callback)
win.protocol("WM_DELETE_WINDOW", on_closing)
win.mainloop()  # 窗口持久化


